iOS开发|数据驱动UI实践-tableView多级菜单的解决思路

关于“一一对应”的一些思考

  • tableView中数据与UI的关系

平时 ,我们的tableView需要展示多少TableViewCell,展示何种TableViewCell,都是由我们的数据来决定的,正常来说,我们的DataSource里面有多少个数据,就显示多少个cell,有多少种data就显示多少种cell,这是正常的一一对应关系,也有极少数开发者将数据与cell形成一对多的映射关系,这种做法在模块内容易造成耦合过高,通常来说不被提倡,我们只讨论一一对应的关系。

数据与UI的一一对应映射模拟

  • 假设我们初始的模拟数据为全部一级菜单:[[1],[1],[1],[1],[1]]
section row dataSource tableViewCell
0 0 一级菜单数据 一级菜单cell
1 0 一级菜单数据 一级菜单cell
2 0 一级菜单数据 一级菜单cell
3 0 一级菜单数据 一级菜单cell
4 0 一级菜单数据 一级菜单cell
  • 当我门点击第三组的一级菜单的时候,就会打开第三组的二级菜单:[[1],[1],[1,2],[1],[1]],即在第三组数据中加入二级菜单的数据,然后刷新UI:
section row dataSource tableViewCell
0 0 一级菜单数据 一级菜单cell
1 0 一级菜单数据 一级菜单cell
2 0 一级菜单数据 一级菜单cell
2 1 二级菜单数据 二级菜单cell
3 0 一级菜单数据 一级菜单cell
4 0 一级菜单数据 一级菜单cell
  • 当我门点击第三组的二级菜单的时候,就会打开第三组的三级级菜单:[[1],[1],[1,2,3],[1],[1]],即在第三组数据中加入三级级菜单的数据,然后刷新UI:
section row dataSource tableViewCell
0 0 一级菜单数据 一级菜单cell
1 0 一级菜单数据 一级菜单cell
2 0 一级菜单数据 一级菜单cell
2 1 二级菜单数据 二级菜单cell
2 2 三级菜单数据 三级菜单cell
3 0 一级菜单数据 一级菜单cell
4 0 一级菜单数据 一级菜单cell